package com.kongxiang.cubebit.vectordb.services;

import org.springframework.ai.document.Document;

import java.util.Collection;
import java.util.List;

/**
 * 向量存储服务接口，定义了向量存储的基本操作。
 *
 * @author 你的姓名
 * @version 1.0.0
 */
public interface VectorStoreService {

    /**
     * 添加单个内容到向量存储。
     *
     * @param content 要添加的内容，不能为空
     */
    void add(String content);

    /**
     * 批量添加内容到向量存储。
     *
     * @param contents 要添加的内容数组，不能为空
     */
    void batchAdd(Collection<String> contents);

    /**
     * 根据查询条件搜索向量存储中的文档。
     *
     * @param query 查询字符串，不能为空
     * @param k 返回结果的数量，必须大于0
     * @param threshold 相似度阈值，必须在0到1之间
     * @return 符合条件的文档列表，可能为空
     */
    List<Document> search(String query, int k, double threshold);

    /**
     * 根据ID删除向量存储中的文档。
     *
     * @param id 文档的唯一标识符，不能为空
     */
    void delete(String id);

    /**
     * 根据ID更新向量存储中的文档内容。
     *
     * @param id 文档的唯一标识符，不能为空
     * @param content 新的内容，不能为空
     */
    void update(String id, String content);
}
